[t:/]$ 지식_

NULL 패턴에 의한 NIL 만들기

2016/05/26
void make_key_vector(struct data_store_t *dp)
{
    dp->user_vhead = malloc(sizeof(struct array_node_t) * dp->user_raw_root->count + 2); // 1부터 시작하고 마지막 널처리
    dp->item_vhead = malloc(sizeof(struct array_node_t) * dp->item_raw_root->count + 2);

    if (!dp->user_vhead || !dp->item_vhead) {
        print_error("데이터 얼록 에러");
        exit(EXIT_FAILURE);    
    }

    push_key_vector(dp->user_raw_root, dp->user_vhead);
    push_key_vector(dp->item_raw_root, dp->item_vhead);

    // NULL 패턴에 의한 NIL 만들기.. while 루프 돌리기 편함
    *(struct array_node_t **)(dp->user_vhead + dp->user_raw_root->count) = NULL;
    *(struct array_node_t **)(dp->item_vhead + dp->item_raw_root->count) = NULL;

}

이렇게 하면 구조체 포인터를 이용할 때 while 루프를 while(p) 로 돌릴 수 있어서 편하다. 더블 포인터로 캐스팅 처리하여 위와 같이 처리하지 않으면 컴파일러가 오류낸다.

더블 포인터의 대표적인 예제.





공유하기













[t:/] is not "technology - root". dawnsea, rss